﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
using GestionTaxesRiaApp.Web;
using GestionTaxesRiaApp.Helpers;
using System.ComponentModel.DataAnnotations;


namespace GestionTaxesRiaApp.Views
{

    public partial class AjouterUtilisateur : Page
    {
        Utilisateur utilisateur = new Utilisateur();
        GestionTaxesContext gestionTaxesContext = new GestionTaxesContext();
        public AjouterUtilisateur()
        {
            SetDroits();
            InitializeComponent();
        }

        // Executes when the user navigates to this page.
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

        private void validerAjoutUtilisateur_Click(object sender, RoutedEventArgs e)
        {
            if (motDePasseTB.Text.Equals(confirmationMotDePasseTB.Text))
            {

                if (prenomTB.Text == null || prenomTB.Text.Equals("") ||
                    nomTB.Text == null || nomTB.Text.Equals("") ||
                    emailTB.Text == null || emailTB.Text.Equals("") ||
                    identifiantTB.Text == null || identifiantTB.Text.Equals("") ||
                    motDePasseTB.Text == null || motDePasseTB.Text.Equals(""))
                {
                    MessageBox.Show("Veuillez remplir le formulaire correctement");
                }
                else if (fon_IdTextBox.Text == 1.ToString())
                {
                    if (adresseTB.Text == null || adresseTB.Text.Equals("") ||
                telephoneTB.Text == null || telephoneTB.Text.Equals(""))
                    {
                        MessageBox.Show("Veuillez remplir le formulaire correctement");
                    }
                    else
                    {
                        utilisateur.uti_Prenom = prenomTB.Text;
                        utilisateur.uti_Nom = nomTB.Text;
                        utilisateur.uti_Mail = emailTB.Text;
                        utilisateur.uti_Login = identifiantTB.Text;
                        utilisateur.uti_MotDePasse = motDePasseTB.Text;
                        utilisateur.uti_IdFonction = int.Parse(fon_IdTextBox.Text);
                        utilisateur.uti_Adresse = adresseTB.Text;
                        utilisateur.uti_Tel = telephoneTB.Text;
                        gestionTaxesContext.Utilisateurs.Add(utilisateur);
                        gestionTaxesContext.SubmitChanges();
                        MessageBox.Show("L'utilisateur a été créé");
                        System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("/GestionTaxesRiaAppTestPage.aspx#/GestionUtilisateur", UriKind.Relative));

                    }
                }
                else
                {
                    if (motDePasseTB.Text.Equals(confirmationMotDePasseTB.Text))
                    {
                        utilisateur.uti_Prenom = prenomTB.Text;
                        utilisateur.uti_Nom = nomTB.Text;
                        utilisateur.uti_Mail = emailTB.Text;
                        utilisateur.uti_Login = identifiantTB.Text;
                        utilisateur.uti_MotDePasse = motDePasseTB.Text;
                        utilisateur.uti_IdFonction = int.Parse(fon_IdTextBox.Text);
                        utilisateur.uti_Adresse = "non renseigné";
                        utilisateur.uti_Tel = "non renseigné";
                        gestionTaxesContext.Utilisateurs.Add(utilisateur);
                        gestionTaxesContext.SubmitChanges();
                        MessageBox.Show("L'utilisateur a été créé");
                        System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("/GestionTaxesRiaAppTestPage.aspx#/GestionUtilisateur", UriKind.Relative));
                    }
                    else
                    {
                        MessageBox.Show("Veuillez remplir le formulaire correctement");
                    }
                }
            }
    }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("/GestionTaxesRiaAppTestPage.aspx#/GestionUtilisateur", UriKind.Relative));
        }

        private void fonctionDomainDataSource_LoadedData(object sender, LoadedDataEventArgs e)
        {

            if (e.HasError)
            {
                System.Windows.MessageBox.Show(e.Error.ToString(), "Load Error", System.Windows.MessageBoxButton.OK);
                e.MarkErrorAsHandled();
            }
        }

        private void proprietaireDomainDataSource_LoadedData(object sender, LoadedDataEventArgs e)
        {

            if (e.HasError)
            {
                System.Windows.MessageBox.Show(e.Error.ToString(), "Load Error", System.Windows.MessageBoxButton.OK);
                e.MarkErrorAsHandled();
            }
        }

        private void fon_LibelleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (fon_IdTextBox.Text == 1.ToString())
            {
                adresseLbl.Visibility = System.Windows.Visibility.Visible;
                adresseTB.Visibility = System.Windows.Visibility.Visible;
                telephonelbl.Visibility = System.Windows.Visibility.Visible;
                telephoneTB.Visibility = System.Windows.Visibility.Visible;
                telephoneEtoile.Visibility = System.Windows.Visibility.Visible;
                adresseEtoile.Visibility = System.Windows.Visibility.Visible;
            }
            else
            {
                adresseLbl.Visibility = System.Windows.Visibility.Collapsed;
                adresseTB.Visibility = System.Windows.Visibility.Collapsed;
                telephonelbl.Visibility = System.Windows.Visibility.Collapsed;
                telephoneTB.Visibility = System.Windows.Visibility.Collapsed;
                telephoneEtoile.Visibility = System.Windows.Visibility.Collapsed;
                adresseEtoile.Visibility = System.Windows.Visibility.Collapsed;
            }
        }
        private void SetDroits()
        {
            if (Connexion.utilisateurStatic.uti_IdFonction != Home.administrateurInt)
            {
                System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("/GestionTaxesRiaAppTestPage.aspx#/Gestions", UriKind.Relative));
            }
            if (Connexion.utilisateurStatic.uti_IdFonction == Home.decoInt)
            {
                System.Windows.Browser.HtmlPage.Window.Navigate(new Uri("/GestionTaxesRiaAppTestPage.aspx#/Connexion", UriKind.Relative));
            }
        }

        private void nomTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_Nom = nomTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_Nom", utilisateur, nomTB.Text);
                ValidationHelper.ClearControlError(nomTB);
                nomTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                nomTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(nomTB, exc.Message);
            }
        }

        private void prenomTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_Prenom = prenomTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_Prenom", utilisateur, prenomTB.Text);
                ValidationHelper.ClearControlError(prenomTB);
                prenomTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                prenomTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(prenomTB, exc.Message);
            }
        }

        private void identifiantTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_Login = identifiantTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_Login", utilisateur, identifiantTB.Text);
                ValidationHelper.ClearControlError(identifiantTB);
                identifiantTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                identifiantTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(identifiantTB, exc.Message);
            }
        }

        private void emailTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_Mail = emailTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_Mail", utilisateur, emailTB.Text);
                ValidationHelper.ClearControlError(emailTB);
                emailTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                emailTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(emailTB, exc.Message);
            }
        }

        private void adresseTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_Adresse = adresseTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_Adresse", utilisateur, adresseTB.Text);
                ValidationHelper.ClearControlError(adresseTB);
                adresseTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                adresseTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(adresseTB, exc.Message);
            }
        }

        private void telephoneTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_Tel = telephoneTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_Tel", utilisateur, telephoneTB.Text);
                ValidationHelper.ClearControlError(telephoneTB);
                telephoneTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                telephoneTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(telephoneTB, exc.Message);
            }
        }

        private void motDePasseTB_LostFocus(object sender, RoutedEventArgs e)
        {
            utilisateur.uti_MotDePasse = telephoneTB.Text;
            try
            {
                ValidationHelper.ValidateProperty("uti_MotDePasse", utilisateur, motDePasseTB.Text);
                ValidationHelper.ClearControlError(motDePasseTB);
                motDePasseTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            catch (ValidationException exc)
            {
                motDePasseTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(motDePasseTB, exc.Message);
            }
            if (!motDePasseTB.Text.Equals(confirmationMotDePasseTB.Text))
            {
                confirmationMotDePasseTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(confirmationMotDePasseTB, "La confirmation du mot de passe n'est pas valide");
            }
            else
            {
                ValidationHelper.ClearControlError(confirmationMotDePasseTB);
                confirmationMotDePasseTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
        }

        private void confirmationMotDePasseTB_LostFocus(object sender, RoutedEventArgs e)
        {
            if (!motDePasseTB.Text.Equals(confirmationMotDePasseTB.Text))
            {
                confirmationMotDePasseTB.BorderBrush = new SolidColorBrush(Colors.Black);
                ValidationHelper.SetControlError(confirmationMotDePasseTB, "La confirmation du mot de passe n'est pas valide");
            }
            else
            {
                ValidationHelper.ClearControlError(confirmationMotDePasseTB);
                confirmationMotDePasseTB.BorderBrush = new SolidColorBrush(Colors.Green);
            }
            
        }
    }
}
